"""
用户数据模型
定义用户表的数据库结构和字段
"""
from sqlalchemy import Column, Integer, String, Boolean, DateTime
from sqlalchemy.sql import func
from app.core.database import Base


class User(Base):
    """用户模型类，对应数据库中的 users 表"""
    
    __tablename__ = "users"  # 数据库表名
    
    # 用户ID，主键，自动递增
    id = Column(Integer, primary_key=True, index=True)
    
    # 用户名，唯一，建立索引，最大长度50字符，不能为空
    username = Column(String(50), unique=True, index=True, nullable=False)
    
    # 邮箱，唯一，建立索引，最大长度100字符，不能为空
    email = Column(String(100), unique=True, index=True, nullable=False)
    
    # 加密后的密码，最大长度255字符，不能为空
    hashed_password = Column(String(255), nullable=False)
    
    # 用户是否激活，默认值为 True
    is_active = Column(Boolean, default=True)
    
    # 创建时间，服务器自动设置，带时区
    created_at = Column(DateTime(timezone=True), server_default=func.now())
    
    # 更新时间，更新时自动设置，带时区
    updated_at = Column(DateTime(timezone=True), onupdate=func.now())


